﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Blade.Metadata.PeLoader {
	public enum CliFieldType {
		Module = 0x00,
		TypeRef = 0x01,
		TypeDef = 0x02,
		// HACK: FieldPtr = 0x03,
		Field = 0x04,
		// HACK: MethodPtr = 0x05,
		MethodDef = 0x06,
		// HACK: ParamPtr = 0x07,
		Param = 0x08,
		InterfaceImpl = 0x09,
		MemberRef = 0x0a,
		Constant = 0x0b,
		CustomAttribute = 0x0c,
		FieldMarshal = 0x0d,
		Permission = 0x0e,
		ClassLayout = 0x0f,
		FieldLayout = 0x10,
		StandAloneSig = 0x11,
		EventMap = 0x12,
		// HACK: EventPtr = 0x13,
		Event = 0x14,
		PropertyMap = 0x15,
		// HACK: PropertyPtr = 0x16,
		Property = 0x17,
		MethodSemantics = 0x18,
		MethodImpl = 0x19,
		ModuleRef = 0x1a,
		TypeSpec = 0x1b,
		ImplMap = 0x1c,
		FieldRVA = 0x1d,
		// HACK: ENCLog = 0x1e,
		// HACK: ENCMap = 0x1f,
		Assembly = 0x20,
		AssemblyProcessor = 0x21,
		AssemblyOS = 0x22,
		AssemblyRef = 0x23,
		AssemblyRefProcessor = 0x24,
		AssemblyRefOS = 0x25,
		File = 0x26,
		ExportedType = 0x27,
		ManifestResource = 0x28,
		NestedClass = 0x29,
		GenericParam = 0x2a,
		MethodSpec = 0x2b,
		GenericParamConstraint = 0x2c,

		Int32 = 0x50,
		Int16,
		Byte,
		RVA,

		StringRef = 0x60,
		GuidRef,
		BlobRef,

		TypeDefOrRef = 0x70,
		HasConstant,
		HasCustomAttribute,
		HasFieldMarshal,
		HasDeclSecurity,
		MemberRefParent,
		HasSemantics,
		MethodDefOrRef,
		MemberForwarded,
		Implementation,
		CustomAttributeType,
		ResolutionScope,
		TypeOrMethodDef,
	}
}
